Routing, Controllers, এবং Views এর ব্যবস্থাপনা

Ruby on Rails এর ভূমিকা (Introduction to Ruby on Rails) - রুবি প্রোগ্রামিং (Ruby Programming) - Computer Programming

286

Routing, Controllers, এবং Views হল MVC (Model-View-Controller) আর্কিটেকচারের গুরুত্বপূর্ণ উপাদান, যা রুবি on Rails (RoR) বা অন্য ওয়েব ফ্রেমওয়ার্কে ব্যবহৃত হয়। এই উপাদানগুলির সাহায্যে ওয়েব অ্যাপ্লিকেশনগুলোতে Request Handling, Data Processing, এবং Rendering the Response কার্যকরভাবে করা হয়। এখানে, আমরা রুবি on Rails ভিত্তিক ওয়েব ডেভেলপমেন্টে Routing, Controllers, এবং Views এর ব্যবস্থাপনা নিয়ে আলোচনা করব।


১. Routing in Ruby on Rails

Routing হল এমন একটি প্রক্রিয়া যা নির্ধারণ করে, ব্যবহারকারীর HTTP রিকোয়েস্ট কোন Controller এবং Action দ্বারা পরিচালিত হবে। রুবি on Rails-এ config/routes.rb ফাইলের মধ্যে রুটিং পরিচালনা করা হয়।

১.১ Basic Routing

রুটিং ফাইলটি সাধারণত config/routes.rb অবস্থান করে এবং এখানে রিকোয়েস্টের জন্য URL এবং সংশ্লিষ্ট controller#action সেট করা হয়।

উদাহরণ:
# config/routes.rb
Rails.application.routes.draw do
  get 'home/index'
  # other routes
end

এখানে, get 'home/index' নির্দেশ করে যে, GET HTTP রিকোয়েস্ট আসলে তা HomeController এর index অ্যাকশনকে ট্রিগার করবে।

১.২ Resourceful Routing

Resourceful Routing হল একটি সাধারণ প্যাটার্ন যা RESTful কনভেনশনের উপর ভিত্তি করে তৈরি, যেখানে একটি রিসোর্সের জন্য মৌলিক CRUD (Create, Read, Update, Delete) অপারেশনগুলির রাউটগুলো স্বয়ংক্রিয়ভাবে তৈরি হয়।

উদাহরণ:
# config/routes.rb
Rails.application.routes.draw do
  resources :articles
end

এটি articles রিসোর্সের জন্য রাউট তৈরি করবে, যা নিম্নলিখিত URL গুলোর সাথে সম্পর্কিত:

  • GET /articlesarticles#index
  • GET /articles/:idarticles#show
  • GET /articles/newarticles#new
  • POST /articlesarticles#create
  • GET /articles/:id/editarticles#edit
  • PATCH/PUT /articles/:idarticles#update
  • DELETE /articles/:idarticles#destroy

১.৩ Nested Routes

কখনও কখনও রিসোর্সের মধ্যে একটি রিসোর্স থাকতে পারে, যেখানে আপনি একটি রিসোর্সের অন্তর্গত একটি নতুন রিসোর্সের জন্য নেস্টেড রাউট তৈরি করতে পারেন।

উদাহরণ:
# config/routes.rb
Rails.application.routes.draw do
  resources :authors do
    resources :books
  end
end

এখানে, authors রিসোর্সের জন্য একটি books রিসোর্স নেস্ট করা হয়েছে, যার ফলে একটি লেখকের সাথে সম্পর্কিত বইয়ের রাউট তৈরি হবে। উদাহরণস্বরূপ:

  • GET /authors/:author_id/booksbooks#index
  • POST /authors/:author_id/booksbooks#create

২. Controllers in Ruby on Rails

Controllers হল অ্যাপ্লিকেশনের অংশ যা HTTP রিকোয়েস্টগুলি গ্রহণ করে এবং সেগুলির উপর নির্ধারিত লজিক বা কাজ বাস্তবায়ন করে। এগুলি সাধারণত অ্যাকশন (action) নামে পরিচিত মেথড ধারণ করে, যেগুলি রাউটিং দ্বারা ডাকা হয়।

২.১ Controller Structure

একটি সাধারণ controller এমনভাবে তৈরি হয়:

class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end

  def show
    @article = Article.find(params[:id])
  end

  def new
    @article = Article.new
  end

  def create
    @article = Article.new(article_params)
    if @article.save
      redirect_to @article
    else
      render :new
    end
  end

  private

  def article_params
    params.require(:article).permit(:title, :body)
  end
end

এখানে:

  • index: সমস্ত articles রিটার্ন করে।
  • show: নির্দিষ্ট article এর বিস্তারিত দেখায়।
  • new: একটি নতুন article তৈরি করতে ফর্ম প্রদর্শন করে।
  • create: নতুন article তৈরি করে এবং সেভ করে।

২.২ Params Handling

params রেলসের একটি বিশেষ হ্যাশ যা ইউআরএল বা ফর্মের ডেটা ধারণ করে। params[:id] বা params[:article] এর মাধ্যমে রিকোয়েস্ট থেকে ডেটা অ্যাক্সেস করা হয়।

২.৩ Redirecting and Rendering Views

  • redirect_to: ইউজারকে অন্য একটি রাউট বা পেজে রিডাইরেক্ট করে।
  • render: কন্ট্রোলার থেকে একটি ভিউ ফাইল (HTML) রেন্ডার করে।
def create
  @article = Article.new(article_params)
  if @article.save
    redirect_to @article  # Redirect to show the created article
  else
    render :new  # Re-render the new article form if saving fails
  end
end

৩. Views in Ruby on Rails

Views হল এমন অংশ যা ব্যবহারকারীর কাছে ডেটা প্রদর্শন করার জন্য ব্যবহৃত হয়। রুবি on Rails-এ views সাধারণত HTML.erb (Embedded Ruby) ফাইলের আকারে থাকে, যেখানে Ruby কোড HTML-এর মধ্যে এমবেড করা থাকে।

৩.১ Basic View Example

<!-- app/views/articles/index.html.erb -->
<h1>Articles</h1>

<% @articles.each do |article| %>
  <div>
    <h2><%= article.title %></h2>
    <p><%= article.body %></p>
    <%= link_to 'Show', article_path(article) %>
  </div>
<% end %>

এখানে:

  • <%= ... %>: Ruby code is evaluated and outputted in the HTML.
  • <% ... %>: Ruby code is executed but not outputted.

৩.২ Rendering Partial Views

রেলসের partials ব্যবহার করে আপনি সাধারণভাবে ব্যবহৃত HTML ব্লকগুলো আলাদা ফাইল হিসেবে সংরক্ষণ করতে পারেন, যা পুনঃব্যবহারযোগ্য এবং পরিষ্কার কোড তৈরি করতে সাহায্য করে।

<!-- app/views/articles/_article.html.erb (partial) -->
<div class="article">
  <h2><%= article.title %></h2>
  <p><%= article.body %></p>
</div>

<!-- app/views/articles/index.html.erb -->
<h1>Articles</h1>
<%= render partial: 'article', collection: @articles %>

এখানে, _article.html.erb একটি পার্শিয়াল ভিউ যা render ব্যবহার করে index.html.erb ফাইলে ইনক্লুড করা হয়েছে।

৩.৩ Layouts in Views

রেলসের layouts একটি সাধারণ কাঠামো যা সমস্ত ভিউতে শেয়ার করা হয়, যেমন হেডার, ফুটার ইত্যাদি। এক্সাম্পল:

<!-- app/views/layouts/application.html.erb -->
<!DOCTYPE html>
<html>
  <head>
    <title>My Application</title>
  </head>
  <body>
    <header>
      <h1>Welcome to My Application</h1>
    </header>
    <%= yield %>  <!-- Yielding content of each view -->
    <footer>
      <p>© 2024 My Company</p>
    </footer>
  </body>
</html>

এখানে, yield ব্লকটি ভিউয়ের কন্টেন্ট রেন্ডার করতে ব্যবহৃত হয়। অন্য সব ভিউ এই লেআউট ব্যবহার করবে, এবং ভিউ কন্টেন্ট এখানে yield এর মধ্যে রেন্ডার হবে।


সারসংক্ষেপ

  • Routing: রাউটিং ফাইল (config/routes.rb) HTTP রিকোয়েস্টের জন্য URL এবং controller এর অ্যাকশন নির্ধারণ করে।
  • Controllers: কন্ট্রোলারগুলি রিকোয়েস্টগুলি গ্রহণ করে এবং রেসপন্স তৈরি করে, এবং params এর মাধ্যমে ইউজারের ইনপুট প্রক্রিয়া করে।
  • Views: ভিউগুলি HTML (বা অন্যান্য ফরম্যাট) দিয়ে ইউজারের কাছে ডেটা প্রদর্শন করে, এবং এর মধ্যে রুবি কোড এমবেড করা যায়।
  • Resourceful Routing: রেলস ডিফল্টভাবে CRUD অপারেশনগুলোর জন্য রাউট তৈরি করে, যা কোডের অর্গানাইজেশন এবং রক্ষণাবেক্ষণ সহজ করে তোলে।

এই উপাদ

ানগুলির মাধ্যমে রুবি on Rails অ্যাপ্লিকেশনটি ভালভাবে পরিচালিত এবং পরিষ্কারভাবে ডেভেলপ করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...